package com.imrookie.wrap;

import com.imrookie.wrap.ClassWrap;
import com.imrookie.wrap.GenericWrap;

import java.lang.reflect.Parameter;

/**
 * 参数包装类
 * @author wangjiyu@imdada.cn
 * @create 2018/12/13
 */
public class ParameterWrap {
    private String parameterName;//参数名
    private String parameterName2;//参数名2,符合命名规范的参数名
    private Parameter parameter;//参数引用
    private ClassWrap classWrap;//类型
    private GenericWrap genericWrap;//参数的泛型信息

    public ParameterWrap() {
    }
    public ParameterWrap(Parameter parameter) {
        this.parameterName = parameter.getName();
        this.parameter = parameter;
        this.classWrap = ClassWrap.getInstance(parameter.getType());
        this.parameterName2 = this.classWrap.getClassName().substring(0,1).toLowerCase() + this.classWrap.getClassName().substring(1) + this.parameterName.substring(this.parameterName.length()-1);
        this.genericWrap = new GenericWrap(parameter.getParameterizedType());
    }

    @Override
    public String toString() {
        return "ParameterWrap{" +
                "parameterName='" + parameterName + '\'' +
                ", classWrap=" + classWrap.getClassName() +
                '}';
    }

    public String getParameterName() {
        return parameterName;
    }

    public void setParameterName(String parameterName) {
        this.parameterName = parameterName;
    }

    public Parameter getParameter() {
        return parameter;
    }

    public void setParameter(Parameter parameter) {
        this.parameter = parameter;
    }

    public ClassWrap getClassWrap() {
        return classWrap;
    }

    public void setClassWrap(ClassWrap classWrap) {
        this.classWrap = classWrap;
    }

    public String getParameterName2() {
        return parameterName2;
    }

    public void setParameterName2(String parameterName2) {
        this.parameterName2 = parameterName2;
    }

    public GenericWrap getGenericWrap() {
        return genericWrap;
    }

    public void setGenericWrap(GenericWrap genericWrap) {
        this.genericWrap = genericWrap;
    }
}
